export namespace TsHelp {

    export type PromiseResolver<T> = (value: T | PromiseLike<T>) => void;
    //获取某个类型中的所有非必填字段
    export type GetOptional<T> = {
        [K in keyof T as T[K] extends Required<T>[K] ? never : K]: T[K];
    }

    //将某个类型中的部分字段变为选填
    export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;

    //获取某个promise的返回类型
    export type PromiseType<T> = T extends Promise<infer R> ? R : T;

    //获取某个接口的promise的返回类型
    export type ApiPromiseType<T> = PromiseType<ReturnType<T extends (...args: any) => any ? T : never>>
}